<?php
class RealImages
{
	var $src                 = '';            //原图片地址
	var $dst                 = '';            //目标图片标示
	var $dst_file             = '';              //目标图片文件地址
	var $dst_width             = 0;            //目标最大宽度
	var $dst_height         = 0;            //目标最大高度
	var $mode                 = 0;              //是否显示(0显示，1不显示)
	var $exe                = '';           //配置新的文件名例如源文件名是：mm.jpg 可以将其配置成plmm.jpg/gg_mm.jpg
	function resize_image($src,$dst_width,$dst_height,$exe='',$mode = 0)
	{
		$this->src          = $src;
		$this->dst_width    = $dst_width;
		$this->dst_height   = $dst_height;
		$this->exe          = $exe;
		$this->mode         = $mode;
		$width              = $this->get_msg($this->src,0);
		$height             = $this->get_msg($this->src,1);
		$src_h              = $this->get_msg($this->src,2);//return:resouse 返回图象标示符
		$size               = $this->resize($this->src,$this->dst_width,$this->dst_height);

		$this->dst          = @imagecreatetruecolor($dst_width,$dst_height);

		//$bool    =imagecopyresized($this->dst,$src_h, 0, 0, 0, 0,140,105, $width, $height); //生成一般缩略图
		$bool    =imagecopyresampled($this->dst,$src_h, 0, 0, 0, 0,$dst_width,$dst_height, $width, $height); //生成高清缩略图
		//$new_file           = $this->exe.basename($this->src);
		//$new_file   ='smll'.basename($this->src);
		$new_file   =basename($this->src);

		if($bool)
		{

			if(isset($mode) && $mode == 0)
			{
				 
				switch ($this->get_msg($src,3))
				{
					case 1:
						return imagegif($this->dst);
						break;
					case 2:
						return imagejpeg($this->dst);
						break;
					case 3:
						return imagepng($this->dst);
						break;
				}
			}
			else
			{

				switch ($this->get_msg($src,3))
				{
					case 1:
						return imagegif($this->dst,$new_file);
						break;
					case 2:
						return imagejpeg($this->dst,$new_file);
						break;
					case 3:
						return imagepng($this->dst,$new_file);
						break;
				}
			}
		}
		else
		{
			echo "拷贝图象并调整大小过程出错啦~";
		}
	}
	/* $src  源图片的地址
	 * $fetch 获取类型  0 获取image width 1 获取image height 2 获取image 3获取type
	 */
	 
	function get_msg($src, $fetch = 0)
	{
		$data = @getimagesize($src);
		switch ($fetch)
		{
			case 0:
				$width = $data[0];
				return $width;
				break;
			case 1:
				$height = $data[1];
				return $height;
				break;
			case 2:
				switch ($data[2])
				{
					case 1:
						$dst = imagecreatefromgif($src);
						return $dst;
						break;
					case 2:
						$dst = imagecreatefromjpeg($src);
						return $dst;
						break;
					case 3:
						$dst = imagecreatefrompng($src);
						return $dst;
						break;
				}
			case 3:
				return $data[2];
				break;
				 
		}
	}
	function resize($src,$dst_width,$dst_height)
	{
		$this->src             = $src;
		$this->dst_width     = $dst_width;
		$this->dst_height     = $dst_height;
		$width                 = $this->get_msg($src,0);
		$height             = $this->get_msg($src,1);
		if($this->dst_width && $width > $this->dst_width )
		{
			$resize_width     = 1;
			$width_ratio      = $this->dst_width/$width;
		}
		if($this->dst_height && $height > $this->dst_height)
		{
			$resize_height     = 1;
			$height_ratio  = $this->dst_height/$height;
		}
		if($resize_height && $resize_width)
		{
			//宽度优先
			if($width_ratio < $height_ratio)
			{
				$size[x] = $width * $width_ratio;
				$size[y] = $height * $width_ratio;
				return $size;
			}
			//高度优先
			else
			{
				$size[x] = $width * $height_ratio;
				$size[y] = $height * $height_ratio;
				return $size;
			}
		}
		elseif($resize_height)
		{
			$size[x] = $width;
			$size[y] = $height * $height_ratio;
			return $size;
		}
		elseif($resize_width)
		{
			$size[x] = $width * $width_ratio;
			$size[y] = $height;
			return $size;
		}
	}
}

?>